﻿using System.Collections.Generic;
using System.Text;
using Core.Domain;

namespace Core.SyntaxAnalysis.Classes
{
    public class Block : Stmt
    {
        private readonly Stmts m_statements;

        public Block(Stmts statements)
        {
            m_statements = statements;
        }

        // вызывается отдельно (не в контексте Stmt) только из Program
        public new bool SemanticCheck(ref List<CompilerError> errors)
        {
            return m_statements == null || m_statements.SemanticCheck(ref errors);
        }

        // вызывается во всех остальных случаях
        public override bool StmtSemanticCheck(ref List<CompilerError> errors)
        {
            return SemanticCheck(ref errors);
        }

        // вызывается отдельно (не в контексте Stmt) только из Program
        public new void Generate(StringBuilder s)
        {
            if (m_statements != null) m_statements.Generate(s);
        }

        // вызывается во всех остальных случаях
        public override void StmtGenerate(StringBuilder s)
        {
            Generate(s);
        }
    }
}